МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра ЗІ
Практична робота № 4
Захист програмного забезпечення та програмні методи захисту інформації
з навчальної дисципліни: “ Захист програмного забезпечення та програмні методи захисту інформації ”
Львів – 2013
Мета роботи: дослідити методи ЗПЗ та їх реалізацію.
Короткі теоретичні відомості
Системи захисту ПЗ широко поширені й перебувають у постійному розвитку, завдяки розширенню ринку ПЗ й телекомунікаційних технологій. Необхідність використання систем захисту (СЗ) ПЗ обумовлена рядом проблем, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство); несанкціоноване використання ПЗ (крадіжка й копіювання); несанкціонована модифікація ПЗ з метою впровадження програмних зловживань; незаконне поширення й збут ПЗ (піратство).
Існуючі системи захисту програмного забезпечення можна класифікувати по ряду ознак, серед яких можна виділити метод установки, використовувані механізми захисту й принцип функціонування.
Системи захисту ПЗ по методу установки можна підрозділити на системи, установлювані на скомпільовані модулі ПЗ; системи, що вбудовують у вихідний код ПЗ до компіляції; і комбіновані.
Системи першого типу найбільш зручні для виробника ПЗ, тому що легко можна захистити вже повністю готове й протестоване ПЗ (звичайно процес установки захисту максимально автоматизований і зводиться до вказівки імені файлу, що захищає, і натисканню "Enter"), а тому й найбільш популярні. У той же час стійкість цих систем досить низка (залежно від принципу дії СЗ), тому що для обходу захисту досить визначити крапку завершення роботи "конверта" захисту й передачі керування захищеній програмі, а потім примусово неї зберегти в незахищеному виді.
Системи другого типу незручні для виробника ПЗ, тому що виникає необхідність навчати персонал роботі із програмним інтерфейсом (API) системи захисту з витікаючими звідси грошовими й тимчасовими витратами. Крім того, ускладнюється процес тестування ПЗ й знижується його надійність, тому що крім самого ПЗ помилки може містити API системи захисту або процедури, його що використають. Але такі системи є більше стійкими до атак, тому що тут зникає чітка границя між системою захисту і як таким ПЗ.
По використовуваних механізмах захисту СЗ можна класифікувати на: системи, що використовують складні логічні механізми; системи, що використовують шифрування захисту ПЗ; і комбіновані системи.
Системи першого типу використовують різні методи й прийоми, орієнтовані на утруднення дизасемблювання, налагодження й аналізу алгоритму СЗ і ПЗ. Цей тип СЗ найменш стійкий до атак, тому що для подолання захисту досить проаналізувати логічні процедури перевірки й належним чином їх модифікувати.
Більше стійкими є системи другого типу. Для дезактивації таких захистів необхідне визначення ключа дешифрації ПЗ.
Самими стійкими до атак є комбіновані системи.
Для захисту ПЗ використовується ряд методів, таких як:
Алгоритми заплутування - використаються хаотичні переходи в різні частини коду, впровадження помилкових процедур - "пустишок", холості цикли, перекручування кількості реальних параметрів процедур ПЗ, розкид ділянок коду по різних областях ОЗУ й т.п.
Алгоритми мутації - створюються таблиці відповідності операндів - синонімів і заміна їх один на одного при кожному запуску програми за певною схемою або випадковим образом, випадкові зміни структури програми.
Алгоритми компресії даних - програма запаковується, а потім розпаковується в міру виконання.
Алгоритми шифрування даних - програма шифрується, а потім розшифровується в міру виконання.
Обчислення складних математичних виразів у процесі відпрацьовування механізму захисту - елементи логіки захисту залежать від результату обчислення значення якої-небудь формули або групи формул.
Методи утруднення дизасемблювання - використовуються різні прийоми, спрямовані на запобігання дизасемблюван...